const { Router } = require( 'express' )
// const mysql = require( 'mysql' )
const db = require( './../db/dbconfig' )
const userRouter = Router()

module.exports = userRouter;

/* userRouter.route( "/login" ).post( ( req, res ) => {
  const { username, password } = req.body;

  //  判断账号，密码

  if ( !username || !password ) {
    // res.json(
    //   {
    //     code: 4001,
    //     msg: '账号密码不能为空。'
    //   }
    // )
    res.redirect( "/index.html" )
    return //结束函数的执行，后面操作数据库的代码，将不执行。
  }
  // 写SQL语句时，不能直接用变量去拼接SQL字符串。只能用?占位。避免sql注入的安全问题发生。
  const sql = 'select * from users where uaccess = ? and upassword = ?;'
  const params = [ username, password ]  // params数组元素，必须与？的具体功能匹配。
  const cb = ( err, data ) => {
    // err,当执行SQL发生错误时，err的值就不是null.
    // data,查询成功后的结果。 []的形式展示。
    // console.log( err )
    // console.log( data )
    if ( err === null && data.length === 1 ) {
      res.redirect( "/pages/main.html" )
    } else {
      res.redirect( "/index.html" )
    }
  }

  // 操作数据课的步骤：
  // 1. 创建一个链接对象
  const conn = mysql.createConnection( {
    host: '127.0.0.1',  //要访问的目标数据库所在电脑的IP地址，'127.0.0.1'， 'localhost', '192.168.1.161'
    port: 3306,  // 默认是3306，安装时要是更改了端口，这写改后的端口号。
    user: 'root',  // 不是电脑的开机密码
    password: '1234',  // 是安装MYSQL时，设置的密码
    database: 'mydoctor', // 操作的那个具体的数据库的名字
    multipleStatements: true, // 支持执行多条 sql 语句
    timezone: '08:00' // 设置时区,如果不匹配，就可能有时差
  } )

  conn.connect()  // 2.打开链接
  conn.query( sql, params, cb ) // 3. 执行sql
  conn.end() //4.关闭链接

} ) */

// /index.html -> /login  -> /index.html

/**
 * @method 'POST'  此接口的请求方法
 * @param {String} username ，用户名 requied
 * @param {String} password, 密码 requied
 */
userRouter.route( "/login" ).post( ( req, res ) => {
  const { username, password } = req.body;
  //  判断账号，密码
  if ( !/^\w{6,20}$/.test( username ) ) {
    res.json( { code: 4001, msg: '账号不能为空或者长度不正确！' } )
    return
  }
  //  判断密码
  if ( !/^\w{6,8}$/.test( password ) ) {
    res.json( { code: 4002, msg: '密码不能为空或者长度不正确！' } )
    return
  }
  const sql = 'select * from users where uaccess = ? and upassword = ?;'
  const params = [ username, password ]
  const cb = ( err, data ) => {
    console.log( err )
    console.log( data )
    if ( err === null && data.length === 1 ) {
      res.json( {
        code: 0, // 请求成功时
        msg: '登录成功',
        data: data
      } )
    } else {
      res.json( { code: 4003, msg: '登录失败', data: [] } )
    }
  }

  // 操作数据课的步骤：
  // 1. 创建一个链接对象
  /* const conn = mysql.createConnection( {
    host: '127.0.0.1',  //要访问的目标数据库所在电脑的IP地址，'127.0.0.1'， 'localhost', '192.168.1.161'
    port: 3306,  // 默认是3306，安装时要是更改了端口，这写改后的端口号。
    user: 'root',  // 不是电脑的开机密码
    password: '1234',  // 是安装MYSQL时，设置的密码
    database: 'mydoctor', // 操作的那个具体的数据库的名字
    multipleStatements: true, // 支持执行多条 sql 语句
    timezone: '08:00' // 设置时区,如果不匹配，就可能有时差
  } )

  conn.connect()  // 2.打开链接
  conn.query( sql, params, cb ) // 3. 执行sql
  conn.end() //4.关闭链接 
  */

  db.connect( sql, params, cb )
} )


userRouter.route( "/access/getAccess" )
  .get( ( req, res ) => {
    let sql = "select * from permissions;"
    let params = [];
    let cb = ( err, data ) => {
      if ( !err ) {   //err === null
        res.json( { code: 0, msg: '查询成功', data } )
      } else {
        res.json( { code: 4003, msg: '查询失败', data: [] } )
      }
    }

    db.connect( sql, params, cb );
  } )


// 搜索权限数据

userRouter.route( '/access/find' ).get( ( req, res ) => {
  let text = req.query.text;

  // let sql = `select * from permissions where pname = ?;`; // 等值判断
  // let params = [ text  ]
  let sql = `select * from permissions where pname like ?;`;  // 模糊查询
  let params = [ '%' + text + '%' ]
  let cb = ( err, data ) => {
    if ( !err ) {
      res.json( {
        code: 0, msg: '查询成功', data
      } )
    } else {
      res.json( {
        code: 0, msg: '查询失败', data
      } )
    }
  }

  db.connect( sql, params, cb )
} )



/**
 * 获取所有权限
 * 查询权限
 */
//  accessRouter.route("/access/getAccess")。get（）

/**
 * 添加权限
 * @param {String} accessName
 * @param {String} accessDes
 *
 */
//  accessRouter.route("/access/addAccess").post（）

/**
 * 删除一个权限
 * @param {number} acid
 */
//  accessRouter.route("/access/delAccess").post

/*
 * 获取一个权限的已授权角色的数据
 */
// accessRouter.route("/access/getRoleForAccess").get

